/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ictius.herramientas;

/**
 *
 * @author Tadeo
 */
public class BusquedaBinaria  {
    /**
     * Realiza una búsqueda de tipo binaria entre dos arreglos de tipo Comparable.
     * @param a Arreglo en donde se va a buscar.
     * @param x Elemento a buscar dentro del arreglo <i>a</i>.
     * @return regresa <i>-1</i> si no ha encontrado nada.
     * @return un entero con la posición del elemento buscado.
     */
    public int busquedaBinaria (Comparable<Object> [] a, Comparable<Object> x){
        int inicio = 0;
        int fin = a.length - 1;
        int medio;
        
        while(inicio <= fin){
            medio = (inicio + fin)/2;
            
            if(a[medio].compareTo(x)<0)
                inicio = medio + 1;
            else if(a[medio].compareTo(x) > 0)
                fin = medio - 1;
            else 
                return medio; //devuelve el valor del puntero donde se encuntra el dato
        }
        return -1; //no ha encontrado nada
    }
}
